package com.gujia.designpattern.observe.template;

import java.util.ArrayList;
import java.util.List;

/**
 * 目标对象，它知道观察它的观察者，
 * 并提供（注册）和删除观察者的接口
 */
public class Subject {
    //用来保存注册的观察者对象
    private List<Observe> observes = new ArrayList<Observe>();

    public void attach(Observe observe){
        observes.add(observe);
    }

    /**
     * 删除集合中的指定观察者
     * @param observe
     */
    public void detach(Observe observe){
        observes.remove(observe);
    }

    protected void notifyObservers(){
        for (Observe observe:observes){
            observe.update(this);
        }
    }
}
